home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Franz PD
/
Franz PD Disk #193 (1992)(Rhein-Sieg-Soft).zip
/
Franz PD Disk #193 (1992)(Rhein-Sieg-Soft).adf
/
GFA.Beispiel
/
Biorhythmus.LST
< prev
next >
Wrap
File List
|
1992-09-14
|
4KB
|
140 lines
REM *********************************
REM * Biorhythmus 0.9 *
REM * (c) 25.7.1992 by Henry Koenig *
REM * Bornheide 71, 2 Hamburg 53 *
REM *********************************
OPENS 1,0,0,640,256,2,&H8000
OPENW #1,0,0,640,256,&H18,&H1800,1
DIM b$(2)
b$(1)=" ------------------+------------------ "
b$(2)=" + "
INPUT "Name: ",d$
INPUT "Geburtstag (Jahr): ",jahr$
INPUT "Geburtstag (Monat): ",monat
INPUT "Geburtstag (Tag): ",tag
INPUT "Druckausgabe (j/n) ";x$
IF x$="j" THEN
gadr%=4 ! Ausgabe auf den Drucker
OPEN "O",#1,"PRT:" ! Druckerkanal öffnen
ELSE
gadr%=0 ! keine Druckausgabe
ENDIF
f$=STR$(monat)
g$=STR$(tag)
aus$="Name: "+d$
ausgabe
aus$="Geburtstag: "+STR$(tag)+"."+f$+"."+jahr$
ausgabe
vergangene.tage
vtgeb=x ! vergangene Tage bis zum Geburtstag
INPUT "Aktuelles Jahr: ",jahr$
INPUT "Aktueller Monat: ",monat
tag=0
f$=STR$(monat)
aus$="Jahr und Monat: "+f$+"/"+jahr$
ausgabe
aus$=" " ! Leerzeile
ausgabe
vergangene.tage ! Anzahl der vergangenen Tage berechnen
vtag=x ! vergangene Tage bis Heute
tage=vtag-vtgeb ! Tage zwischen Heute und dem Geburtstag
schaltjahr ! auf Schaltjahr pruefen
monatstage ! Anzahl der Tage des akt. Monats
phys=tage-INT(tage/23)*23 ! physisch
emot=tage-INT(tage/28)*28 ! emot
in=tage-INT(tage/33)*33
aus$=" Negativ 0 Positiv Tag"
ausgabe
aus$=b$(1)
ausgabe
FOR k=1 TO motag ! Anzahl der Tage des Monats
l=0
m=0 ! Mittel loeschen
IF k=5*INT(k/5) THEN
l=1
ENDIF
IF l=1 THEN
b$(0)=b$(1)
ELSE
b$(0)=b$(2)
ENDIF
g=SIN((k+phys)/23*360*0.0174553292)
m=INT(18*ABS(g))*SGN(g)
p$="P"
grafikzeile
g=SIN((k+emot)/28*360*0.0174553292)
m=m+INT(18*ABS(g))*SGN(g)
p$="E"
grafikzeile
g=SIN((k+in)/33*360*0.0174553292)
m=m+INT(18*ABS(g))*SGN(g)
p$="I"
grafikzeile
mittelgrafik
aus$=b$(0)
aus$=aus$+SPACE$(3-LEN(STR$(k)))
aus$=aus$+STR$(k)
ausgabe
NEXT k
aus$=b$(1)
ausgabe
CLOSE ! alle Dateien und Geräte schließen
INPUT x$
END
> PROCEDURE vergangene.tage ! vergangene Tage berechnen
aktjahr=VAL(jahr$) ! Jahr merken
ht=tag ! Tag merken
IF monat>=3 THEN ! Monat >= Maerz?
hj=aktjahr ! Jahr merken
hm=monat+1 ! Monat plus 1 merken
ELSE ! Januar oder Februar
hj=aktjahr-1 ! Jahr minus 1
hm=monat+13 ! 13 Monate addieren
ENDIF
x=INT(365.25*hj)+INT(30.6*hm)+ht-122 ! bereits verg. Tage
x=x-INT(hj/100)+INT(hj/400)
RETURN
> PROCEDURE schaltjahr ! auf Schaltjahr pruefen
IF aktjahr<>4*INT(aktjahr/4) THEN
sjahr=0 ! kein Schaltjahr
GOTO schaltjahr.ende
ENDIF
IF aktjahr<>100*INT(aktjahr/100) THEN
sjahr=1 ! Schaltjahr
GOTO schaltjahr.ende
ENDIF
IF aktjahr<>400*INT(aktjahr/400) THEN
sjahr=0 ! kein Schaltjahr
GOTO schaltjahr.ende
ENDIF
sjahr=1 ! Schaltjahr
schaltjahr.ende:
RETURN
> PROCEDURE monatstage ! Anzahl der Monatstage feststellen
motag=31 ! 31 Tage vorbesetzen
IF monat=4 OR monat=6 OR monat=9 OR monat=11 THEN
motag=30 ! Monat hat 30 Tage
ENDIF
IF monat=2 THEN ! Februar?
motag=28+sjahr ! ja, dann 28 Tage + Schaltjahr
ENDIF
RETURN
> PROCEDURE grafikzeile ! Rhythmuszeile zusammensetzen
sp=20+INT(18*ABS(g))*SGN(g) ! Spaltenposition
b$(0)=LEFT$(b$(0),sp-1)+p$+MID$(b$(0),sp+1)
RETURN
> PROCEDURE mittelgrafik ! Mittelwert ausgeben
m=INT(m/3) ! Mittel der 3 Kurven
p$="*" ! Kennung fuer das Mittel der Kurven
sp=20+m ! Spaltenposition
b$(0)=LEFT$(b$(0),sp-1)+p$+MID$(b$(0),sp+1)
RETURN
> PROCEDURE ausgabe ! Ausgabe auf Bildschirm und Drucker
IF gadr%=4 THEN ! Flag fuer Druckaugabe gesetzt?
PRINT #1,aus$ ! Ausgabe auf den Drucker
ENDIF
PRINT aus$ ! Bildschirmausgabe
RETURN
REM ! damit der Interpreter beim kopieren nicht
REM ! abstürzt